Data processing systems may use virtual addresses to indicate storage locations while the processing system uses locations identified by physical addresses to actually store the data in. The use of virtual addresses may be done for a number of reasons such as to reduce the number of bits required to identify an address location within software, or to allow several processes to access a restricted memory space.
A complete set of current mappings for the virtual to physical addresses are stored in memory, however in order to decrease access time to these mappings, recently used mappings are stored in caches called table lookaside buffers or TLBs that can be accessed more quickly by the processor.
Where a transaction has a fault the transaction may need to be stalled or terminated depending on the fault. Transactions of the same context that follow the faulting transaction will also need to be terminated or stalled depending on the fault. It may take some time for the processor to recognise that a fault has occurred and to identify the fault and in the meantime further transactions will have been issued. As the TLBs store translations that are quick to access, they might return translations that have been requested for transactions following faulting transactions. It is therefore important that they receive information regarding faulting transactions so that the flow of transactions can be controlled.
In order for transactions accessing the cache to determine whether a translation is for a transaction following a faulting transaction, information regarding this has previously been stored in the TLB in the form of two indicator bits associated with each entry. These bits indicated that a fault had occurred for that transaction and whether the fault was a terminate fault or a stall fault. This allowed the system to deal with the transactions in the appropriate way.
As there are often many TLBs and each have many entries, this is expensive in area.
It would be desirable to be able to control transactions following faults without too large an area overhead.